package org.Yiran.timetale_re.item.base;

import net.minecraft.network.chat.Component;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import org.Yiran.timetale_re.util.item.TooltipUtils;
import org.jetbrains.annotations.NotNull;

import javax.annotation.Nullable;
import java.util.List;

/**
 * 通用物品基类，提供基础的文本提示功能
 * <p>
 * 该类是一个通用的物品基类，主要用于没有特殊功能但需要描述文本的物品。
 * 支持按Shift键显示更多信息，适用于如石碑等装饰性或说明性物品。
 * </p>
 */
public class DescriptiveItem extends Item {
    
    // ============================== 构造方法 ==============================
    
    /**
     * 构造函数 - 创建一个新的描述性物品
     * 
     * @param properties 物品属性
     */
    public DescriptiveItem(Properties properties) {
        super(properties);
    }

    // ============================== 工具提示方法 ==============================
    
    /**
     * 添加工具提示信息
     * <p>
     * 在客户端环境中为物品添加工具提示信息。
     * 使用TooltipUtils工具类来处理复杂的提示逻辑，支持按Shift键显示更多信息。
     * </p>
     * 
     * @param stack 物品堆栈
     * @param level 世界对象
     * @param tooltip 工具提示列表
     * @param flag 工具提示标志
     */
    @Override
    @OnlyIn(Dist.CLIENT)
    public void appendHoverText(@NotNull ItemStack stack, @Nullable Level level, @NotNull List<Component> tooltip, @NotNull TooltipFlag flag) {
        super.appendHoverText(stack, level, tooltip, flag);
        // 添加基础描述
        TooltipUtils.addBaseDescription(tooltip, this.getDescriptionId());

        // 隔一行
        TooltipUtils.addSeparatorLine(tooltip);

        // 检查是否按下了Shift键并显示相应信息
        if (TooltipUtils.isShiftPressed()) {
            // 显示详细信息
            TooltipUtils.addDetailedInfo(tooltip, this.getDescriptionId());
        } else {
            // 提示按Shift查看详细信息
            TooltipUtils.addShiftPrompt(tooltip);
        }
    }
}